data h2o; input a w; cards; 2 1.008 1 16 ; run; proc print data=h2o; run; options mprint; %let chemdata=h2o; %let molecule=Water(H2O); %macro molarmass; data mmm; set &chemdata; mm=sum(a*w); ; proc means data=mmm sum noprint; var mm; output out=mmsum sum=; run; title "Molar mass for &molecule"; proc print data=mmsum; var mm; run; title; %mend; %molarmass data sucrose; input a w; cards; 12 12.01 22 1.008 11 16 ; run; * no need to rerun macro if it worked before and is same SAS session; * NEED to reset %LET variables; %let chemdata=sucrose; %let molecule=Sucrose; %molarmass